Advances in technology have resulted in smaller and more powerful computing devices. For example, there currently exist a variety of portable personal computing devices, including wireless computing devices, such as portable wireless telephones, personal digital assistants (PDAs), tablet computers, and paging devices that are small, lightweight, and easily carried by users. Many such computing devices include other devices that are incorporated therein. For example, a wireless telephone can also include a digital still camera, a digital video camera, a digital recorder, and an audio file player. Also, such computing devices can process executable instructions, including software applications, such as a web browser application that can be used to access the Internet and multimedia applications that utilize a still or video camera and provide multimedia playback functionality. As such, these devices can perform functions typically performed by larger devices, such as desktop computers.
Processors, such as those in wireless telephones and other computing devices, often include one or more translation lookaside buffers (TLBs). A TLB may be used to cache translations between virtual addresses and physical addresses. When a specified virtual address is not found in the TLB, a new entry may be created in the TLB for the specified virtual address, where the new entry includes a corresponding physical address translation. Creating this entry can be done in hardware or by software. Alternately, an existing entry of the TLB may be overwritten with translation information for the specified virtual address. If the specified virtual address is found, i.e., matches an entry of the TLB, the TLB returns the physical address stored in the matching entry.
To maintain data consistency, it may be useful to prevent situations in which multiple entries of the TLB match an input virtual address. Conventionally, this duty falls on the operating system using the TLB. However, due to programming errors and other conditions, it may be difficult to rely upon the operating system to fulfill this duty. Moreover, some systems may concurrently execute multiple operating systems (e.g., guest operating systems in communication with a hypervisor), which may introduce further complexity in TLB management; the hypervisor may be responsible for programming a (software programmed) TLB, and the guest operating system defines the translations, but cannot be trusted to create translations that do not overlap.